<?php
/**
 * Autor:   Miguel A. Zilli
 * Email:   miguelzilli@gmail.com
 */

class UsuariosController extends AppController {
    var $name = 'Usuarios';
    var $uses = array('Usuario','Acoentidad');
    var $paginate=array(
        'limit'=>'20',
        'order'=>array('Usuario.apellido','Usuario.nombre','Acoentidad.nombre_ent')
    );

    function listar(){
        $this->__checkAdmin();
        $condiciones['OR']=array(
            array('Usuario.tipo'=>'ADMIN'),
            array('Usuario.tipo'=>'ACOENTIDAD')
        );
        $this->set('usuarios',$this->paginate('Usuario',$condiciones));
    }

    function ver($id){
        $this->__checkAdmin();

    }

    function agregar(){
        $this->__checkAdmin();
        if (!empty($this->data)){
            $this->Usuario->set($this->data);
            if($this->Usuario->validates()){
                $this->data['Usuario']['password']=md5($this->data['Usuario']['password']);
                $this->Usuario->save($this->data,false);
                $this->Session->setFlash('Operacion realizada correctamente.');
                $this->redirect(array('action'=>'listar'),null,true);
            }else{
                $this->Session->setFlash('Error: No se pudo realizar la operacion.');
            }
        }
        $this->set('tipos',array('ADMIN'=>'ADMINISTRADOR','ACOENTIDAD'=>'USUARIO'));
        $this->set('acoentidades',$this->Acoentidad->find('list'));
    }

    function editar($id=null){
        $this->__checkAdmin();
        if(!empty($this->data)){
            $this->Usuario->set($this->data);
            if($this->Usuario->validates()){
                $this->data['Usuario']['password']=md5($this->data['Usuario']['password']);
                $this->Usuario->save($this->data,false);
                $this->Session->setFlash('Operacion realizada correctamente.');
                $this->redirect(array('action'=>'listar'),null,true);
            }else{
                $this->Session->setFlash('Error: No se pudo realizar la operacion.');
            }
        }
        if(empty($this->data)){
            $this->data=$this->Usuario->read(null,$id);
        }
        $this->set('tipos',array('ADMIN'=>'ADMINISTRADOR','ACOENTIDAD'=>'USUARIO'));
        $this->set('acoentidades',$this->Acoentidad->find('list'));
    }

    function eliminar($id=null){
        $this->__checkAdmin();
        $tipo=$this->Usuario->field('Usuario.tipo',array('Usuario.id'=>$id));
        if($tipo=='ADMIN'){
            if(!empty($this->data)){
                $pass=$this->Usuario->field('Usuario.password',array('Usuario.id'=>$id));
                $eliminar=(md5($this->data['Usuario']['password'])==($pass));
                if(($eliminar)&&($this->Usuario->del($id))){
                    $this->Session->setFlash('Operacion realizada correctamente.');
                    $this->redirect(array('action'=>'listar'),null,true);
                }else{
                    $this->Session->setFlash('Error: No se pudo realizar la operacion.');
                    $this->redirect(array('action'=>'listar'),null,true);
                }
            }
            if(empty($this->data)){
                $this->data=$this->Usuario->read(null,$id);
            }
        }else{
            if($this->Usuario->del($id)){
                $this->Session->setFlash('Operacion realizada correctamente.');
                $this->redirect(array('action'=>'listar'),null,true);
            }else{
                $this->Session->setFlash('Error: No se pudo realizar la operacion.');
                $this->redirect(array('action'=>'listar'),null,true);
            }
        }
    }

    function login(){
        if(!empty($this->data)){
            $user = $this->Usuario->validateLogin($this->data['Usuario']);
            if($user){
                $this->Session->write($user);
                $this->redirect('/');
            }else{
                $this->Session->setFlash('Error: Login incorrecto.');
            }
        }
    }

    function logout(){
        $this->Session->destroy('Usuario');
        $this->redirect('/');
    }
}
?>